a=-9131066806178775074563442660598579270122471400095857643975089968880095513358803336376209113517019173972336997664021862720129680033001702088798583281103386257322436407067809704169707199188262693361757960624498771560546539919964041303109668589274121413059835007927422181652046410841311719845985881235942598259017937240495607941092817366912375808129646465443258466418596593804310547378618288251440878931422244332655811541102866389859937650088634359355706712094947110223423850883236500349733830033003999507059859560156102740469007354912173866345470907796707536144405770595801959170767353383658383791919217068164646054351
b=9131066806178775074563442660598579270122471400095857643975089968880095513358803336376209113517019173972336997664021862720129680033001702088798583281103386257322436407067809704169707199188262693361757960624498771560546539919964041303109668589274121413059835007927422181652046410841311719845985881235942598258848303277164279361414761951309875063742238680941129129811749805824808431907333760264310543546833130387703469297297753959032478020487539551804667487274640374689844322770130875681452806761311358368318802963106306125760405891297737634728773313788838096754643510492527059109357180227267991404643669541760438384831 

f1 = lambda p, q: (p*q)&(~(p-q))|(~(p*q))&(p-q)
f2 = lambda p, q: (p*q)&(~(p+q))|(~(p*q))&(p+q)

candidates = {(0, 0)}
for m in range(1025):
    #print(m, len(candidates))
    candidates_ = set()
    mask = (2 << m) - 1
    for x, y in candidates:
        if f1(x, y) == a and f2(x, y) == b:
            e1=x
            e2=y
            #print(e1,e2)
        for bx in range(2):
            for by in range(2):
                xx = x + (bx << m)
                yy = y + (by << m)
                if f1(xx, yy) & mask != a & mask:
                    continue
                if f2(xx, yy) & mask != b & mask:
                    continue
                candidates_.add((xx, yy))
    candidates = candidates_

from Crypto.Util.number import *
from gmpy2 import invert
def cma(n, c1, c2, e1, e2):
    def egcd(a, b):
        if b == 0:
            return a, 0
        else:
            x, y = egcd(b, a % b)
            return y, x - (a // b) * y
    s = egcd(e1, e2)
    s1 = s[0]
    s2 = s[1]

    if s1 < 0:
        s1 = - s1
        c1 = invert(c1, n)
    elif s2 < 0:
        s2 = - s2
        c2 = invert(c2, n)
    m = pow(c1, s1, n) * pow(c2, s2, n) % n
    return m
N = 20444526417914794739360784082872441939200982094133956211507153102817479055869323669053679860865424110510092824953311985928400599461286997088502822404396017300789062987007594375148602618741642244418631261619377550358297951668009601602861785542116818520338388766842255709742242218972716486781890003898642803551669943085930388582223210579815174046735541925076810987566530334632041458542101602808091868836754630323452277908866018208929968031623847911543481257000221284470600555490823811255989837594658944507503106071303688261679225076859237943515825791272707269346679066326272083374598330556540614967430706471055962543037
ct1_1 = 8608893851673072472046228842579845729341646818235733152580182188411311633961853269819484428893389605969008904017109299061947689380746335730486027117033679250784938350314939430912541736264324233314106989271704236589435136992993198612670352888372509201806880362355411951379778440656051744338111300474407116356669764254956085650213734098687208147523022381832526322950017234973224898637693221003086736698531292389048058480238987780780646638556603051156800896173178780470951540416537302988384981163586849096321026028361849997434565605437016670946445173102163274927004308929011798215587633617852224081861152816330487744111
ct2_1 = 17605879558855808052278371627210479166506735031968646939406943822449423454291396047083818926165679630363819723678387802776613474576715178572221443205482791814491233487589391727579965574203978783263037600528551968237409832960074042197794564506889615156748695411011886221725902629862042632703504357404835001855377855068915818194566204137394124217335212980671134477431520826634975121052006333724558153404356449696433302111020062989699139309290505351309168837253942690114623294098258408074409972895652119631697140495853076954398640453974144676680611435277499502392711183744356450520802265096721676395931541786723381466013

ct1 = []
ct2 = []
flag=''
for i in range(1,2):
    ct1.append(eval("ct1_"+str(i)))
    ct2.append(eval("ct2_" + str(i)))
    flag =cma(N,ct1[i-1],ct2[i-1],e1,e2)
print(long_to_bytes(flag))
